package com.syn.com.syn.th;

/*
 目标：可见性问题；多个线程并发抢夺共享资源，一个线程修改，其他线程可见
 1、创建flag共享变量，默认值为true
 2、开启线程1，读取flag，进行死循环
 3、开启线程2；修改flag
 */
public class SyncVisibility {
    private static Object object = new Object();
    // 创建共享变量flag
    private static  boolean flag = true;//volatile也可以解决问题

    public static void main(String[] args) throws InterruptedException {
        // 创建1  不断读取共享变量
        new Thread(() -> {
            while (flag) {
//                System.out.println(">>>>>"+true);//解决可见性
                //解决可见性
               synchronized (object) {
               }
            }
        }).start();

        Thread.sleep(2000);

        // 线程2   修改共享变量
        new Thread(() -> {
            flag = false;
            System.out.println("线程修改了变量的值为false");
        }).start();
    }
}
